
#ifndef EVT_BASE_IMP_H
#define EVT_BASE_IMP_H

#include "Event/EvtIf.h"


enum EventIDG
{
	EVT_Invalid,

	EVT_EnterScene,
	EVT_LeaveScene,
    

	EVT_BaseEnd = 99,
};

class TCOM_API EvtImp : public IEvt
{
public:
	EvtImp(int nGrpID, int nID, int nArgX = 0, int nArgY = 0, int nArgZ = 0);
	EvtImp();
	virtual ~EvtImp(){;}

	//	
	//	ID
	//
	virtual void	setID(int nID);
	virtual int		getID()const;

	//
	//	Group ID
	//
	virtual void	setGroupID(int nGrpID);
	virtual int		getGroupID()const;	


	//
	//	Data X, Y, Z
	//	Which is used most frequently
	//
	virtual void	setDataX(int x);
	virtual void	setDataY(int y);
	virtual void	setDataZ(int z);

	virtual int		getDataX()const;
	virtual int		getDataY()const;
	virtual int		getDataZ()const;

	//
	//	Data Extension, more data
	//
	virtual	int		getData(const short& nIdx, int nDefault)const;
	virtual void	setData(const short& nIdx, int nValue);

	//
	//	Data Extension, more data, string as key
	//
	virtual	int		getData(const char* szKey, int nDefault = 0)const;
	virtual void	setData(const char* szKey, int nValue);

	//
	//	Data Extension, more data, string as key, string as data
	//
	virtual	int		getData(const char* szKey, string& sValue)const;
	virtual void	setData(const char* szKey, const string& sValue);

	//
	//	some event can have the ability to clone himself
	//
	virtual	IEvt*	clone();
protected:
	int m_nID;
	int m_nGrp;
	
	int m_nArgX;
	int m_nArgY;
	int m_nArgZ;
};

#endif // EVTGENERAL_H
